package com.geek.javase.ch03.test5;

/*
 *@author wangpeng
 *2025/10/12 22:17
 *@description TODO
 */

/**测试类
 *
 * 游戏需求：
 * 1、定义一个英雄类Hero，可以通过这个类创建英雄角色
 * 属性：
 *     游戏角色拥有昵称name，等级level，血量blood，攻击力power，防御力defence，种族kind，
 * 装备Equip（只能装3个装备，初始没有装备）。
 * 方法：
 *     游戏角色拥有基本攻击方法（拥有一定几率打出暴击）attack(Monster m)，死亡判定方法isDead()，添加装备的方法addEquip(Equip e)，获取角色信息的方法show()。
 *
 * 2、定义一个怪兽类Monster，可以通过这个类创建怪兽角色
 * 属性：
 *     怪兽拥有名称name，等级level，血量blood，攻击力power，防御力defence，种族kind。
 * 方法：
 *     怪兽拥有基本攻击方法attack(Hero h)，死亡判定方法isDead()，获取怪兽信息的方法show()。
 *
 * 3、定义装备类Equip，可以通过这个类创建各种装备
 * 属性：
 *     装备拥有名称name，级别level，颜色color，类别kind，攻击力power，防御力defence。
 * 方法：
 *     装备拥有获取装备信息的方法show()。
 *
 * 4、测试类
 * 创建一个游戏角色：英雄类Hero、装备Equip、怪兽Monster，英雄类Hero装上装备，双方使用回合制的形式进行攻击（一人打一下，角色英雄类Hero先攻击，失血量=攻击-防御 ，攻击<防御，不产生攻击），直到一方死亡，游戏结束。
 *
 * 其中：
 * 暴击>某个值
 * 失血量=(攻击+暴击)-防御
 *
 *
 */
public class Test {
    public static void main(String[] args) {
        //多态，父类的引用指向子类的实例   编译看左，运行看右
        Role hero = new Hero("正义之士","8",1000,150,20,"人族");
        Role monster = new Monster("倭寇","10",3000,180,240,"兽族");
        System.out.println("英雄初始属性");
        hero.show();

        Equipment e1 = new Equipment("大刀","5","银色","刀具",100,20);
        Equipment e2 = new Equipment("苗刀","5","银色","刀具",100,20);
        Equipment e3 = new Equipment("狼刀","5","银色","刀具",100,20);
        Equipment e4 = new Equipment("长剑","5","银色","刀具",100,20);
        //给英雄装备

        if(hero instanceof Hero){
            Hero h = ((Hero) hero);
            h.addEquip(e1);
            h.addEquip(e2);
            h.addEquip(e3);
        }

        hero.show();   //英雄信息
        monster.show();     //怪兽信息
        int count = 0;  //记录回合数
        while(true){

            System.out.println("--------第" + (++count) + "回合-------------" );
            //先是英雄打怪兽
            hero.attack(monster);
            if (monster.isDead()){
                System.out.println("英雄打败怪兽了");
                break;
            }
            //怪兽打英雄
            monster.attack(hero);
            if(hero.isDead()){
                System.out.println("怪兽打败英雄");
                break;
            }
        }
    }
}
